// const obj = {
//   age: 18,
//   name: 'zg'
// };
// Object.freeze(obj);
// console.log(Object.isFrozen(obj)); //true
// obj.name = "jam"; // 修改无效
// console.log(obj.name); // zg
// obj.grade = 'A';
// console.log(obj.grade); // undefined


// // const arr = [1];
// // Object.freeze(arr);
// // arr.push(2); // 报错
// // console.log(arr);

// const freezeObj = {
//   age: 18,
//   name: "zg",
//   innerObj: {
//     age: 22,
//     name: "lucy"
//   }
// };
// Object.freeze(freezeObj);
// freezeObj.name = "jam"; // 修改无效
// console.log(freezeObj.name); // zg
// freezeObj.innerObj.name = "jam"; // 修改起作用
// console.log(freezeObj.innerObj.name); // jam


// 深冻结
function deepFreeze(obj) {
  const keys = Object.keys(obj);
  for(let key of keys) {
    if(typeof(obj[key]) == 'object' && obj[key] != null) {
      deepFreeze(obj[key]);
    }
  }
  return Object.freeze(obj);
}
const freezeObj = {
  age: 18,
  name: "zg",
  innerObj: {
    age: 22,
    name: "lucy"
  }
};
deepFreeze(freezeObj);
freezeObj.name = "jam"; // 修改无效
console.log(freezeObj.name); // zg
freezeObj.innerObj.name = "jam"; // 修改无效
console.log(freezeObj.innerObj.name); // lucy

